Method and system for improving the efficiency and ensuring the integrity of a data transfer

ABSTRACT

The present invention provides an improved method and system of improving the efficiency, and ensuring the integrity, of a data transfer in a serverless backup, or third party copy, system having one or more physical storage devices. The present invention provides improvements to the processing of serverless copy, or EXTENDED COPY, commands, and transfers of data associated with such commands. These improvements increase the speed at which such commands are executed and completed, and increase the capabilities of copy managers in serverless backup systems. The improvements also make better use of the storage devices involved in the data backup process. The method broadly includes determining a desired manner of execution of segment descriptors, or instructions, as a function of components of those instructions. Other aspects of the invention allow for execution of data segments of any size, and validation of segment descriptors and target descriptors prior to data transfer.

RELATED APPLICATIONS

The present application is a divisional of co-pending U.S. patentapplication Ser. No. 10/113,888, filed Mar. 29, 2002, which is hereinincorporated by reference.

TECHNICAL FIELD

The present invention relates generally to computer systems, and, moreparticularly, to data backup in storage area network (“SAN”)environments.

BACKGROUND OF THE INVENTION

Computer systems and networks require backup and archival of data aspart of their regular maintenance and security. To address a need fordata backups in computer systems and networks using fewer server andlocal area network (“LAN”) resources, the concept of serverless backupwas devised. Serverless backup is also commonly referred to as “thirdparty copy.” This technology is widely known within the computer storageindustry, and is detailed in specification T10/99-143r1 (“T10”) and,more recently, in SCSI Primary Commands-3 (“SPC-3”), whichspecifications are incorporated herein by reference.

In a traditional LAN free backup, computer data is backed up using aSAN. While this frees the associated LAN from the data trafficoccasioned by the backup, it still burdens one of the servers on the SANwith copying data from various storage devices to various backup storagedevices. An example of a traditional LAN free backup is illustrated inFIG. 1. FIG. 1 depicts three servers (11, 12, 13) connected to a seriesof physical storage devices (15, 16, 17, 19, 20) through a generic SANinterconnect topology (10) and a storage router (18). The storagedevices in this example are SCSI tape drives (16, 17) and disk arrays(15), and Fibre Channel tape drives (20) and disk arrays (19). Anassociated LAN is also depicted (14). FIG. 1 also illustrates the flowof commands (21, 23, 25) and data (22, 24, 25) to and from such physicalstorage devices.

In serverless backup, a specialized copy manager, or data mover, handlesall of the data movement, or transfers, associated with the data backup.Examples of such data transfers include block to stream, stream toblock, block to block, inline to stream, etc., all of which aredescribed in the T10 and/or SPC-3 specifications. Serverless backupremoves servers from the data path during the backup process, thusenabling those servers to be utilized for tasks other than backing updata. In a serverless backup system, a server, commonly referred to as a“host” in the SAN context, creates and transfers a command, i.e. anEXTENDED COPY command, to a copy manager residing in the serverlessbackup system. The copy manager handles all data transfers associatedwith the backup, and reports status back to the host that issued thecommand. An example of a serverless backup system is illustrated in FIG.2. Such systems are disclosed in the prior art.

In FIG. 2, the serverless backup system (40) is depicted as part of aSAN (30). As in FIG. 2, serverless backup systems are typicallyassociated with one or more hosts (42, 43, 44). Hosts associated withserverless backup systems may run data backup software sold by any one,or a combination of, numerous vendors to generate serverless backupcommands. Such hosts include a wide array of hardware and operatingsystem platforms.

Serverless backup systems typically include, without limitation, one ormore copy managers (50) that perform backups according to serverlessbackup commands, and one or more physical storage devices (46, 47, 48,51, 52) that data is transferred to and/or from during the serverlessbackup process. The physical storage devices depicted in FIG. 2 are ofthe same variety as those depicted in FIG. 1, as described above.Likewise, FIG. 2 depicts a SAN interconnection topology (41) and theflow of commands (53, 55, 59) and data (54, 56, 59) to and from suchphysical storage devices.

The copy manager (50) in the example of FIG. 2 resides within a storagerouter (49) for illustrative purposes. In practice, a copy manager mayreside in a broad spectrum of devices. These devices include, but arenot limited to, storage routers, bridges, switches, hubs, and individualphysical storage devices (e.g. tape drives, hard drives, disk arrays, CDdrives, etc.). The main criteria for defining a copy manager is anydevice, with the exception of hosts, capable of processing a serverlessbackup command.

Storage devices associated with serverless backup commands may bedivided into two broad categories: physical storage devices and virtualstorage devices.

Physical storage devices are actual, hardware-based devices that areused to store data. Examples are the Fibre Channel (52) and SCSI (47,48)tape drives and hard disk arrays (46, 51) depicted in FIG. 2. Furtherexamples of physical storage devices include individual disk drives,tape drives, CD drives, DVD drives, arrays of such devices, and others.Storage protocols, and related storage protocol commands, used ininterfacing the physical storage devices vary based upon application.Some examples are SCSI, Fibre Channel, iSCSI, ATA, etc.

Unlike physical storage devices, virtual storage devices do not exist inany clearly visible form, but are instead conceptual components builtinto the copy manager. For serverless backup commands, some examples ofvirtual devices include the PAD, INLINE, EMBEDDED, and DISCARD devicesor associated actions. These virtual storage devices enable special caseprocessing that may be called for in connection with a given serverlessbackup command.

Both physical storage devices and virtual storage devices may act as thesources of data to be transferred in the context of a serverless backupcommand. In such a capacity, such storage devices are referred to hereinas “source storage objects.” In the example depicted in FIG. 2, both theSCSI and Fibre Channel disk arrays may act as source storage objects.Similarly, both physical storage devices and virtual storage devices mayact as the destinations to which data is transferred in the context of aserverless backup command. In such a capacity, they are referred toherein as “destination storage objects.” In the example of FIG. 2, theFibre Channel tape drive (52) acts as a destination storage object.

A serverless backup command (57) consists of an identifier for a commandalong with associated parameters, or command flags. Such a command alsocontains a list of target descriptors which describe the storage devices(targets) to be acted upon in processing the command. A serverlessbackup, or EXTENDED COPY, command further contains a list of segmentdescriptors that describe the data movements to occur with relation tothose targets. Segment descriptors can be viewed generally asinstructions as to how to perform the desired backup with the relevantstorage devices. Segment descriptors are referred to generically hereinas “instructions.” The components of such instructions include, amongother things, the location of the data to be transferred, the storagedevices involved, the size of the data to be transferred, and others,all of which are described in the T10 and SPC-3 specificationsincorporated herein. In addition to target and segment descriptors, acommand may contain inline data to be transferred as part of the backupprocess.

The basic structure of a serverless backup command may be depicted asfollows:

COMMAND IDENTIFIER COMMAND FLAGS TARGET DESCRIPTOR LIST LENGTH SEGMENTDESCRIPTOR LIST LENGTH 1ST TARGET DESCRIPTOR * * * NTH TARGET DESCRIPTOR1ST SEGMENT DESCRIPTOR * * * NTH SEGMENT DESCRIPTOR INLINE DATA

The detailed format of such serverless backup commands varies based uponspecification, and are included in specifications T10 and SPC-3.

In existing serverless backup command processing, a copy manager movesor transfers data by processing each segment descriptor (describing thedata transfer to be performed) in the order in which it is received,i.e. in a linear fashion. In doing so, the copy manager reads data froma source storage device and writes data to a destination storage devicefor an individual segment. A flow chart illustrating such an existingprocess is depicted in FIG. 3. Using this method to process the command(60, 61, 62, 63, 64, 65, 66), copy managers allocate internal resourcesas required for the particular instance of data movement (segment).

While such traditional command processing may reliably back up data, itis performed in a slow and cumbersome manner. Delays may result in notonly the execution of a command, but also in the retrieval of data,because traditional methods do not organize and segment the segmentdescriptors or the corresponding data in a preferred manner. No effortis made in such existing systems to increase the efficiency of copymanagers or storage devices performing the backup, i.e. transferring ormoving data. A further limitation of traditional processing is thatindividual segment descriptors, and the corresponding data transfers,are limited by the size of physical memory within a copy manager.

Therefore, a need exists for a method to address these shortcomings andimprove the efficiency and ensure the integrity of data transfers inserverless backup systems. The methods of this invention were devised toaddress this need.

DISCLOSURE OF THE INVENTION

With parenthetical reference to the corresponding elements or portionsof the disclosed embodiment, merely for purposes of illustration and notby way of limitation, the present invention provides an improved methodand system of improving the efficiency, and ensuring the integrity, of adata transfer in a serverless backup system (40) with one or morephysical storage devices (e.g. 46, 47, 48, 51, 52) and being associatedwith a host (42, 43, 44).

The present invention provides several improvements to the processing ofserverless copy commands, and the transfer of data associated with suchcommands. These improvements increase the speed at which serverless copycommands are executed and completed, and increase the capabilities ofcopy managers. The improvements also make better use of the storagedevices involved in the data backup process.

The improved method broadly includes the following steps: transferringfrom a host to the serverless backup system a command comprising one ormore instructions designating a transfer of data from at least onesource storage object to at least one destination storage object; anddetermining a desired manner of execution of the instructions as afunction of components of the instructions, e.g. location of the data tobe transferred, the storage devices involved, and the size of the datato be transferred.

In one aspect of the invention, the command is an EXTENDED COPY command.In another aspect, the instructions are segment descriptors.

Another aspect of the invention includes, in addition to the foregoingsteps, the following additional step: transferring a second command fromthe host to the serverless backup system prior to completing thedetermination of the desired manner of execution of the instructions. Inanother aspect of the invention, the method includes the additional stepof executing the instructions in the manner determined.

Yet another aspect of the invention includes the step of transferring asecond command from the host to the serverless backup system prior tobeginning the execution of the instructions. In another aspect, a secondcommand is transferred from the host to the serverless backup systemprior to completing the execution of the instructions.

Another aspect of the invention includes the step of transmitting thestatus of the command to the host upon completion of the execution ofthe instructions.

In another aspect of the invention, execution of the instructionsincludes reading from at least one of the source storage objectsdesignated by the instructions; and, in another aspect, executionincludes writing to at least one of the destination storage objectsdesignated by the instructions.

In another aspect of the invention, execution of the instructionsincludes the step of transferring the data designated by theinstruction, in the manner determined by the method of the presentinvention, from at least one of the source storage objects designated bythe instructions to at least one of the destination storage objectsdesignated by the instructions.

Another aspect of the invention includes the step of determining whetherthe instructions are capable of being executed by the serverless backupsystem, i.e. validating the segment descriptors. In one aspect of theinvention, that determination is made before any data associated withthe command being processed is transferred from the source storageobject or to the destination storage object.

Yet another aspect of the invention includes the steps of providing apredetermined set of instructions which are executable by the serverlessbackup system, and comparing the instructions transferred from the hostwith the predetermined set of instructions, to determine if theinstructions transferred from the host are included in the predeterminedset of instructions, i.e. are capable of being executed. In one aspectof the invention, this comparison is performed before any data istransferred from a source storage object or to a destination storageobject. In other aspects of the invention, an error message isgenerated, and/or the command is terminated, if any of the instructionsare not included in that predetermined set of instructions.

In one aspect of the present invention, the command includes a targetdescriptor portion, and the method includes the additional step ofdetermining whether the target descriptor portion is capable of beingprocessed by the serverless backup system, i.e. validating the targetdescriptors. In one aspect of the invention, that determination is madebefore any data is transferred. In other aspects of the invention, anerror message is generated, and/or the command is terminated, if thetarget descriptor portion is not capable of being processed by theserverless backup system.

Another aspect of the invention includes the steps of determiningwhether each of the instructions transferred from the host to theserverless backup system, as part of a command, is capable ofapplication to a corresponding source storage object, and transferringthe data designated by the instructions if each of the instructions iscapable of application to a corresponding source storage object, whereinthat determination is made prior to transferring any data. Other aspectsof the invention include the steps of generating an error message,and/or terminating the command, if any of the instructions is notcapable of application to the corresponding source storage object.

Another aspect of the invention includes the steps of determiningwhether each of the instructions transferred from the host to theserverless backup system, as part of a command, is capable ofapplication to a corresponding destination storage object, andtransferring the data designated by the instructions if each of theinstructions is capable of application to a corresponding destinationstorage object, wherein that determination is made prior to transferringany data. Other aspects of the invention include the steps of generatingan error message, and/or terminating the command, if any of theinstructions is not capable of application to the correspondingdestination storage object.

One of the principal improvements of this invention which providesincreased efficiency is the generation and use of lists of input andoutput actions, referred to herein as “input/output actions.” Theinput/output action lists reflect data transfers to and from the copymanager in a manner distinct from the segment descriptors. The inputaction list contains the actions that involve reading data from variousstorage devices into the copy manager, and the output action listcontains the actions that involve writing data or storage protocolcommands from the copy manager. All input/output actions describe thelocation and quantity of data associated with the action and how theaction is related to other actions to be executed by the copy manager.

These input/output actions describe the storage devices involved in thetransfer (virtual and physical), the operation to be performed with suchdevices (e.g. read, write, etc.), the number of bytes involved in thetransfer (“transfer size”), corresponding memory locations, data hazardsassociated with the input/output action, etc.

The contents and format of an input/output action include:

OPERATION CODE ACTION ITEM STATE STORAGE DEVICE IDENTIFIER BYTE TRANSFERLENGTH COUNT (NUMBER OF BLOCKS, FILEMARKS, ETC.) LOGICAL BLOCK ADDRESSSOURCE BLOCK DEVICE BYTE OFFSET DESTINATION BLOCK DEVICE BYTE OFFSETINLINE DATA ADDRESS EMBEDDED DATA ADDRESS DATA POINTER PREVIOUS ACTIONFOR STORAGE DEVICE NEXT ACTION FOR STORAGE DEVICE DATA AVAILABILITYCOUNTER RELATED LOW INPUT/OUTPUT ACTION RELATED HIGH INPUT/OUTPUT ACTIONRELATED SEGMENT NUMBER INPUT ACTION DATA HAZARD OUTPUT ACTION DATAHAZARD

The operation code field describes the function that must be performedto complete the input/output action. Example operation fields can beread, write, space, and verify commands. The action item state describesthe phase of operation that the action is in. These states include, butare not limited to compilation, run-time engine, command issued, andcomplete. The storage device identifier indicates the particular storagedevice in the serverless backup system that this action refers to. Thebyte transfer length is derived from the segment descriptor used tocreate the input/output action, and specifies the number of bytes thatthis action will move into, or out of, the copy manager. The logicalblock address is used in conjunction with action items that refer toblock based storage devices. In such cases, it is used to identify thelocation that data is to be read from or written to on those devices.Source block device offset allows for the data for an input action thatis to be read from a source block device to be started from a locationother than the start of a whole block. Similarly, destination blockdevice offset allows for the data for an output action that is to bewritten to a destination block device to be started from a locationother than the start of a whole block. The inline data address providesa means for the copy manager to track the location of the inline data tobe used for the action in the copy manager's internal memory. In thesame way, embedded data address supplies a means for the copy manager totrack the location of the embedded data to be used for the action in thecopy manager's internal memory. The data pointer field is used by thecopy manager to monitor the location of the data associated with thecommand in the internal memory of the copy manager. In the case of inputactions, this field controls where data returned from storage devices isheld by the copy manager. For output actions, this field designates thelocation of the data to be written out to a storage device in completingthe action. The previous and next action for storage device fieldsprovide links to the closest input/output actions in the list thatinvolve the same storage device. Using this field, it is possible totraverse all of the actions for a given storage device in a particularlist. This enables optimizations that group the execution of actions fora storage device in a manner that exploits the operating characteristicsof that device. The data availability counter field tracks the number ofinput actions associated with a particular output action. Using thisfield, it can easily be determined when all data associated with anoutput action has been read into the copy manager, thus clearing the wayfor the output action to write the data out. Finally, the input andoutput action data hazard fields check for data ordering constraintssimilar to those encountered in pipelined computer architectures. Theseelements allow for data hazards such as read after write (RAW) and writeafter read (WAR) to be tracked such that data coherency can be protectedduring the optimizations performed during compilation.

Generally, in the present invention, each segment descriptor istransferred into one or more input actions, and one or more outputactions. Input actions describe the individual data movements that willtake place between source storage objects and the copy manager. This canbe thought of as the copy manager reading data associated withserverless backup into its internal memory. Output actions describe theindividual data movements that will take place between destinationstorage objects and the copy manager. This can be thought of as the copymanager writing data associated with serverless backup from its internalmemory.

In other words, another aspect of the present invention includes thestep of generating a list of input/output actions as a function of thecomponents of the instructions. In another aspect of the invention, themethod includes the step of determining a desired manner of execution ofthe input/output actions as a function of the characteristics of theinstructions and of the physical storage devices present in theserverless backup system. Another aspect of the invention includesexecuting the input/output actions in the manner so determined.

Other aspects of the invention include the steps of determining thedesired manner of execution of the input/output actions as a function ofa data location, transfer size and device identifier associated with aphysical storage device and/or input/output action. In other aspects ofthe invention, the desired manner of execution of the input/outputactions includes combining a plurality of the input/output actions,and/or reordering a plurality of the input/output actions.

In other aspects of the invention, one or more of the instructionstransferred from the host to the serverless backup system do not directa transfer of data to a physical storage device. Other aspects of theinvention include the steps of providing a virtual storage device, andtransferring from a physical storage device to the virtual storagedevice data corresponding to such an instruction which does not direct atransfer of data to a physical storage device. In one aspect of theinvention, such a transfer includes the processing of a DISCARD action.In another aspect of the invention, the method includes the steps ofproviding a virtual storage device, and transferring from the virtualstorage device to a physical storage device data corresponding to aninstruction which does not direct a transfer of data from a physicalstorage device. In other aspects of the invention, such a transferincludes the processing of PAD, INLINE, or EMBEDDED actions.

Other aspects of the invention include the step of providing a run-timeengine to evaluate the characteristics of the instructions and thephysical storage devices present in the serverless backup system. Inanother aspect, the method of the present invention includes the step ofissuing storage protocol commands. In yet another aspect, the run-timeengine determines whether the data designated by the instructions iscapable of being read from said source storage objects. In anotheraspect, the method comprises the step of issuing storage protocolcommands corresponding to each of the input/output actions if that datais capable of being read from the source storage objects.

In another aspect of the present invention, the run-time enginedetermines whether the data designated by the instructions is capable ofbeing written to the destination storage objects. In another aspect, themethod comprises the step of issuing storage protocol commandscorresponding to each of the input/output actions if that data iscapable of being written to the destination storage objects.

In another aspect of the invention, the serverless backup systemincludes a memory pool, and the run-time engine determines whethersufficient memory has been allocated by the serverless backup system toperform each of the input/output actions. Another aspect of theinvention includes the following additional step: requesting additionalmemory from the memory pool if sufficient memory is not allocated by theserverless backup system to perform each of the input/output actions.

In another aspect of the present invention, the run-time engine inquireswhether each of the source storage objects designated by theinstructions is capable of performing a corresponding input action.Another aspect of the invention includes the following additional step:issuing storage protocol commands corresponding to each of theinput/output actions if each of the source storage objects designated bythe instructions is capable of performing a corresponding input action.

In another aspect of the present invention, the run-time engine inquireswhether each of the destination storage objects designated by theinstructions is capable of performing a corresponding output action.Another aspect of the invention includes the following additional step:issuing storage protocol commands corresponding to each of theinput/output actions if each of the destination storage objectsdesignated by the instructions is capable of performing a correspondingoutput action.

In other aspects of the invention, the determination of the desiredmanner of execution of instructions is made concurrently for a pluralityof commands.

Another aspect of the invention includes the step of providing acompiler. In another aspect, the compiler determines the desired mannerof execution.

In other aspects of the invention, the method includes the followingsteps: transferring from the host to the serverless backup system acommand comprising one or more instructions designating a transfer ofdata from at least one source storage object to at least one destinationstorage object; providing a predetermined set of instructions executableby the serverless backup system; comparing those instructions with thepredetermined set of instructions to determine if the instructions areincluded in the predetermined set of instructions; and transferring thedata designated by the instructions if each of the instructions isincluded in the predetermined set of instructions; wherein thecomparison is performed prior to the transfer of the data. Other aspectsof the present invention include the following steps: generating anerror message, and/or terminating the command, if any of thoseinstructions are not included in said predetermined set of instructions.

In other aspects of the invention, the method includes the followingsteps: transferring from the host to the serverless backup system acommand comprising one or more instructions designating a transfer ofdata from at least one source storage object to at least one destinationstorage object; determining whether each of the instructions is capableof application to a corresponding source storage object; andtransferring the data designated by the instructions if each of theinstructions is capable of application to a corresponding source storageobject; wherein such determination is made prior to transfer of thedata. Other aspects of the present invention include the followingsteps: generating an error message, and/or terminating the command, ifany of the instructions is not capable of application to a correspondingsource storage object.

In other aspects of the invention, the method includes the followingsteps: transferring from the host to the serverless backup system acommand comprising one or more instructions designating a transfer ofdata from at least one source storage object to at least one destinationstorage object; determining whether each of the instructions is capableof application to a corresponding destination storage object;transferring the data designated by the instructions if each of theinstructions is capable of application to the corresponding destinationstorage object; wherein such determination is made prior to transfer ofthe data. Other aspects of the present invention include the followingsteps: generating an error message, and/or terminating the command, ifany of the instructions is not capable of application to a correspondingdestination storage object.

In other aspects of the invention, the method includes the followingsteps: transferring from the host to the serverless backup system acommand comprising one or more instructions designating a transfer ofdata from at least one source storage object to at least one destinationstorage object; generating a list of input/output actions as a functionof components of the instructions; and providing a run-time engine toevaluate the characteristics of the instructions and the physicalstorage devices present in the serverless backup system. Another aspectincludes the following step: determining whether the data designated bythe instructions is capable of being read from the source storageobjects. Yet another aspect includes this step: issuing storage protocolcommands corresponding to each of the input/output actions if that datais capable of being read from the source storage objects.

Another aspect includes the following step: determining whether the datadesignated by the instructions is capable of being written to thedestination storage objects. Yet another aspect includes this step:issuing storage protocol commands corresponding to each of theinput/output actions if the data is capable of being written to thedestination storage objects.

In the course of executing the command, the serverless backup system mayencounter instructions which designate the transfer of data of a sizegreater than the size of the physical memory available in the copymanager. One aspect of this invention permits the processing of datasegments or portions of unlimited size. In this aspect, instructionslarger than a predetermined size, i.e. base memory buffer size, arebroken into smaller segment descriptors referred to herein as“pseudo-instructions” or “pseudo-segments.”

More particularly, one aspect of the invention, a method of executing acommand comprising one or more instructions designating a transfer ofdata from at least one source storage object to at least one destinationstorage object is provided, which method includes the following steps:transferring from the host to the serverless backup system a commandcomprising an instruction, which instruction corresponds to data in asource storage object; comparing the base memory buffer size of theserverless backup system with the size of the designated data in thesource storage object; and, if the size of the data in the sourcestorage object is greater than the base memory buffer size, generating aplurality of pseudo-instructions corresponding to a plurality of dataportions, each of the data portions having a size less than or equal tothe base memory buffer size; thereby allowing instructions designating atransfer of data of any size to be processed by the serverless backupsystem. Another aspect includes the additional step of executing each ofthe pseudo-instructions.

In another aspect of the invention, the serverless backup systemincludes a host; one or more physical storage devices; a source storageobject having a data portion; a destination storage object; and meansfor determining a desired manner to process a transfer of data from thesource storage object to the destination storage object. In anotheraspect, the serverless backup system includes a compiler. In yet anotheraspect, the serverless backup system includes a run-time engine.

In another aspect of this invention, the serverless backup systemincludes means for generating a list of input/output actions to beprocessed by said serverless backup system. In yet another aspect, thesystem includes means for determining the manner of execution of theinput/output actions as a function of characteristics of theinstructions and the physical storage devices present in the serverlessbackup system.

In another aspect of the present invention, the serverless backup systemincludes means for processing a data portion or segment of any size. Inanother aspect, the system includes means for generatingpseudo-instructions.

The general object of the invention is to improve the efficiency of datatransfers in a serverless backup, or third party copy, system.

Another object of the present invention is to insure the integrity ofsuch a transfer.

Another object of this invention is to provide the host associated witha serverless backup system with the status of processing or executing anEXTENDED COPY command.

Yet another object of the present invention is to quicken the process oftransferring data to physical or virtual storage devices, and retrievingdata from such devices.

Other objects include increasing the efficiency of a copy manager in aserverless backup system, and improving the efficiency of physicalstorage devices.

These and other objects and advantages will become apparent from theforegoing and ongoing written specification, the accompanying drawingsand the appended claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram depicting a LAN free backup system.

FIG. 2 is a block diagram illustrating a serverless backup system in astorage area network, associated with hosts.

FIG. 3 is a flowchart illustrating the processing of serverless backupcommands in the prior art.

FIG. 4 is a flowchart illustrating an embodiment of the method of thepresent invention.

FIG. 5 illustrates the pseudo-instructions of the present invention.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

At the outset, it should be clearly understood that like referencenumerals are intended to identify the same parts, elements or portionsconsistently throughout the several drawing figures, as such parts,elements or portions may be further described or explained by the entirewritten specification, of which this detailed description is an integralpart. Unless otherwise indicated, the drawings are intended to be readtogether with the specification, and are to be considered a portion ofthe entire written description of this invention.

FIG. 4 is a flow chart depicting one illustrative embodiment of theinvention. The method illustrated in FIG. 4 strives to improve theefficiency of data transfer associated with a serverless backup command,and to maximize the utilization and performance of physical storagedevices involved in data backup, while ensuring the integrity of thedata transfer.

The process starts with the transfer of a serverless backup command,i.e. an EXTENDED COPY command, from a host to the serverless backupsystem, shown in block 70 as receipt by the serverless backup system ofa serverless backup command. Next, at block 71, the target descriptorsassociated with the command are validated. In this embodiment, thisvalidation is performed by comparing the list of target descriptors withthose target descriptors supported by the copy manager. In this regard,a copy manager may not support all specification-defined targetdescriptors. The host, therefore, inquires the supported targetdescriptors before generating a serverless backup command. Additionally,at block 71, the copy manager residing in the serverless backup systemverifies that the format of the supported target descriptors iscompliant with the serverless backup specification in use, e.g. T10 andSPC-3. If unsupported or non-compliant target descriptors are located72, the method proceeds to blocks 94 and 95, wherein the serverlessbackup command is terminated, an error message is generated and statusis returned to the host.

If a determination is made that the target descriptors are valid 72, thecopy manager, at block 73, instantiates all storage devices, bothphysical and virtual, associated with the command. This step verifiesthat storage devices utilized by more than a single instance of aserverless backup command are properly referenced during processing.This step also enables physical and virtual storage devices to betreated in the same manner while processing a serverless backup command.Finally, this step 73 provides a means for the copy manager to verifythat the maximum allowable number of targets associated with a commandhas not been exceeded. Should any errors be encountered whileinstantiating storage devices, the method proceeds to blocks 94 and 95,wherein the serverless backup command is terminated, an error message isgenerated and status is returned to the host.

If the system is able to instantiate all storage devices 74, the methodproceeds to block 75, where the segment descriptors, or instructions,associated with the serverless backup command are validated. In thisembodiment, this validation is performed by comparing the list ofsegment descriptors to be processed with the segment descriptorssupported by the copy manager, i.e. a predetermined set of instructionsexecutable by the serverless backup system. The copy manager may notsupport all specification-defined segment descriptors. The host,therefore, inquires the supported segment descriptors before generatinga serverless backup command. Additionally, the copy manager verifiesthat the format of the supported target descriptors is compliant withthe serverless backup specification in use. This allows the copy managerto compare the desired data transfer instructions with the predeterminedset of instructions that it has been designed to support. If it isdetermined that unsupported or non-compliant segment descriptors arepresent 76, the method proceeds to blocks 94 and 95, wherein theserverless backup command is terminated, an error message is generatedand status is returned to the host.

If not 76, the method proceeds to block 77, wherein apseudo-instruction, or pseudo-segment, analysis is performed. In thecourse of processing segments or instructions, the possibility existsthat the amount of data designated to be moved by an instruction islarger than the physical memory available in the copy manager. Basedupon the complete individual processing of segment descriptor model ofexecution in prior art, it is common for copy managers to limit themaximum segment size to a number of bytes smaller than the physicalmemory in the copy manager. This places constraints on backup softwarethat utilizes the copy manager by forcing it to generate longerserverless backup commands which move smaller amounts of data persegment descriptor. The methods of this invention enhance serverlessbackup performance by allowing for segments of unlimited size. In theprocess of compiling individual segments, segments larger than apredetermined size, i.e. the base memory buffer size, are broken intosmaller segment descriptors termed pseudo-segments orpseudo-instructions 77. These pseudo-instructions are then compiled, atblocks 78 through 82, as if the original serverless backup command hadcontained such multiple instructions. The number of pseudo-instructionscreated equals the total data transfer called for in the originalinstruction divided by the base memory buffer size, with that quotientrounded up. An example of a segment descriptor being broken intopseudo-instructions is shown in FIG. 5. In this illustrative embodiment,the predetermined size of pseudo-instructions can be tailored tomaximize data transfer performance based upon several factors includingthe size of the physical memory in the copy manager, and thecharacteristics of the physical storage devices present in the systemand associated with the serverless backup command.

Upon successful completion of segment descriptor validation 76, themethod passes to a multi-pass compiler 78, 79, 80, 81, 82. Thecompilation of this embodiment is both iterative and cumulative innature, with the final result being a data transfer sequence optimizedor improved to take advantage of the particular capabilities of the copymanager and the storage devices involved in the serverless backup. Thefirst aspect of the compilation phase involves the parsing of individualsegment descriptors into input 78 and output 79 actions corresponding toall data transfers described by the instruction, i.e. generatinginput/output actions. The number of input/output actions created willvary based upon the nature of the instruction being parsed, as well asthat of the previous instruction(s), and the characteristics of thephysical storage devices involved in the current segment.

Once the input/output actions have been created, they are optimized 80,82 to improve the performance of the serverless backup system, i.e. adesired manner of execution of the input/output actions is determined asa function of the characteristics of the instructions, e.g. datalocation, transfer size, device identifiers. The final result of theoptimization is a more efficient order of data movement than thatoriginally specified in the segment descriptors. This method createsinput/output action lists, and the corresponding improved order of datatransfers based upon an analysis of several factors: the characteristicsof the physical storage devices involved in the segment, and thecharacteristics of the segment descriptor itself. Specific factorsconsidered in this embodiment include the identity of the applicabledevice in the serverless backup system, physical storage devices, theaccess nature of the device, whether or not the device accepts commandswhich are tagged in nature, if the device is part of a striped array,the size of the data transfer to the physical device, and the locationof data on the physical device.

After optimizing the action items for one instruction, the nextinstruction is selected 81 and the process of parsing and optimizingdescribed above 78, 79, 80 is repeated 81. The segment compilingcontinues in this iterative fashion until all segment descriptors havebeen processed.

Upon the completion of the iterative compilation of the final segmentdescriptor, the cumulative facet of the compiler takes effect. At thispoint all of the input/output actions generated for the command areoptimized collectively in a single final pass 82 of the input and outputaction lists. Criteria similar to that used in the optimizing of actionsassociated with individual segments are used in this final, cumulativeoptimization.

The final phase of operation involves the actual movement of data withinthe serverless backup system. Upon completion of the final optimization82, the input/output action lists are passed to a run-time engine 83 forprocessing and evaluation. In this embodiment of the invention, therun-time engine generates and manages the actual data transfer commandswhich will process the backup. The run-time engine generates and managesstorage protocol commands required to direct the flow of data from thesource storage objects to the destination storage objects in theserverless backup system. These storage protocol commands take the formof the native protocol for the device referenced. The result may beSCSI, FCP, iSCSI, or ATA commands, to name some examples. The actualissuing sequence of storage protocol commands occurs based upon theorder of the actions as a result of the compilation process, and theconformance of individual actions to a devised system of firing rules.The firing rules stipulate when a command can be issued to a storagedevice. These rules take into account the presence of data within thecopy manager to complete the command to be issued, as well as any datahazards conditions that may apply to the action. Data hazards foractions are defined exactly as they are for pipelined execution incomputer architecture analysis. If the firing rules for an action aresatisfied when the action is evaluated, the actual data transferassociated with that action may begin. In evaluating firing rules andthe status of physical storage devices involved in the backup, therun-time engine oversees all of the data transfers called for in theoriginal serverless backup command.

The run time engine completes when all actions and their correspondingdata transfers have completed successfully or an error is encountered incommand processing by one of the storage devices. In the case of such anerror an appropriate failure message is prepared and sent back to thehost.

These steps are illustrated in FIG. 4. After the input/output actionsare passed to the run-time engine 83, a determination is made whetherany storage device has reported an error 84. If any storage device hasreported an error, the method passes to blocks 94 and 95, wherein thecommand is terminated, an error message is generated, and command statusis returned to the host.

If no storage device has reported an error, a determination is madewhether all input actions have been processed 85. If all input actionshave been processed, the method passes to block 89, where adetermination is made whether the firing rules have been met for theoutput actions. If not, the method passes back to block 84. If thefiring rules have been met, a determination is made whether thedesignated output device can accept a command 90. If not, the methodpasses back to block 84. If the output can accept a command, an outputcommand is issued to write data 91.

If, at block 85, a determination is made that all input actions have notbeen processed, the method passes to block 86 where a determination ismade as to whether the firing rules have been met for the next inputaction. If not, the method passes to block 89, and the proceduredescribed above with respect to block 89 is followed.

If, at block 86, a determination is made that the firing rules have beenmet for the next input action, the method passes to block 87, where adetermination is made as to whether the designated input device canaccept the command. If not, the method passes to block 89, and theprocedure described above with respect to block 89 is followed.

If, at block 87, a determination is made that the designated inputdevice can accept the command, an input command is issued to read data88.

If the foregoing method results in the issuance of an output command towrite data 91, the method then passes to block 92, where a determinationis made whether a storage device has reported an error. If it has, themethod passes to blocks 94 and 95, wherein the command is terminated, anerror message is generated, and command status is returned to the host.

If a determination is made that no storage device has reported an error,the method passes to block 93, where a determination is made as towhether all output actions have been processed. If not, the methodpasses to block 84, and the foregoing method repeats. When all outputactions have been processed, the method passes to block 95, where thecommand status is reported to the host.

While there has been described what is believed to be the preferredembodiment of the present invention, those skilled in the art willrecognize that other and further changes and modifications may be madethereto without departing from the spirit of the invention. Therefore,the invention is not limited to the specific details and representativeembodiments shown and described herein. Accordingly, variousmodifications may be made without departing from the spirit or scope ofthe general inventive concept as defined and differentiated by thefollowing claims.

1. A method of executing a command comprising one or more segmentdescriptors designating the transfer of data from at least one sourcestorage object to at least one destination storage object, in aserverless backup system having at least one physical storage device anda base memory buffer size, and being associated with a host and a datamover, comprising the steps of: transferring from said host to said datamover a command comprising a segment descriptor, said segment descriptordesignating a transfer of data in a source storage object; comparingsaid base memory buffer size with the size of said data in said sourcestorage object; generating a plurality of pseudo-segments in said datamover corresponding to a plurality of data portions, each of said dataportions having a size less than or equal to said base memory buffersize, if said size of said data in said source storage object is greaterthan said base memory buffer size; and transferring said data in saidsource storage object in accordance with said pseudo-segments; therebyallowing segment descriptors designating a transfer of data of any sizeto be processed by said serverless backup system.
 2. The method of claim1 wherein said command is an EXTENDED COPY command.